package com.shi.study.lanmda;

import java.util.function.Function;

interface Add1{
    int add(int a,int b);
}

interface Add2{
    int add(int a,int b);
}

public class AddFunctionTest {

    public static void getAdd(Add1 add){
    }

    public static void getAdd(Add2 add){
    }

    public static void main(String[] args){
//        Function<Integer,Function<Integer,Integer>> function=x->y->{
//            x=x-1;
//            return x+y;
//        };

        //级联表达式
        //计算x+y的值
        Function<Integer,Function<Integer,Integer>> function1=x->y->x+y;
        Function<Integer,Integer> functionTemp1=function1.apply(1);
        System.out.println(functionTemp1.apply(2));
        //计算x+y+z的值
        Function<Integer,Function<Integer,Function<Integer,Integer>>> function2=x->y->z->x+y+z;
        Function<Integer,Function<Integer,Integer>> functionFunction=function2.apply(1);
        Function<Integer,Integer> functionTemp2=functionFunction.apply(2);
        System.out.println(functionTemp2.apply(3));
    }

}
